Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), and flash memory.
A typical flash memory comprises a memory array, which includes a large number of memory cells. The flash memory is differentiated from other non-volatile memory in that flash memory cells can be erased and reprogrammed in blocks instead of one byte at a time.
Flash memory devices typically have some type of error detection and correction that provides greater reliability. For example, if a design in which the memory device is implemented is electrically noisy but requires high reliability (e.g., automobile antiskid braking system), some type of error detection and correction would be necessary to increase the reliability that the data in the memory is actually what was stored by the processor or other controller.
Error correction schemes that are used in memory devices include Hamming or Reed-Solomon codes. However, each of these schemes has drawbacks. The Hamming code is faster than many error correction schemes but is not as robust. The Reed-Solomon code is very robust but is relatively slow.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a more efficient and robust error detection and correction scheme in memory devices.